package com.chenu.gamscriptman.domain;


import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.experimental.Accessors;

import java.util.Arrays;
import java.util.List;
import java.util.Map;

@Data
@Accessors(chain = true)
@TableName(value = "gamdata")
public class GameData {

    @TableId(type = IdType.AUTO, value = "id")
    private Long id;

    @TableField(value = "dev_range")
    private String devRange;        /* 设备范围，表示该游戏数据被哪些设备使用。 */

    @TableField(value = "region_server_range")
    private String regionServerRange;        /* 区服范围，表示设备应该在什么大区什么服务器创建角色。 */

    @TableField(value = "nr_role")
    private Integer nrRole;         /* 角色数量，即该每台设备应该有几个角色。 */

    @TableField(value = "game_fk")
    private Long gameFK;            /* 游戏外键 */

    @TableField(value = "data")
    private String data;            /* 游戏数据，以一个json字符串存放，必须key:value一对。 */
    @TableField(exist = false)
    private Map<String, String> resourceDataMap;    /* 以上游戏数据解析完后的实体类 */

    /* 外键映射 */
    @TableField(exist = false)
    private Game game;
    @TableField(exist = false)
    private User admin;

    /* 给用户的json数据需要忽略的字段 */
    public static List<String> ignoreAttr = Arrays.asList(
            "gameFK", "game", "admin"

    );

    /* 额外的查询条件封装 */
    @TableField(exist = false)
    private GameTask gameTask;      /* 用于确定一个用户数据 */
    @TableField(exist = false)
    private String gameName;        /* 分组查询，按游戏名称 */

    /* 用户需要的数据，它们跟表中稍有不同 */
    @TableField(exist = false)
    private String adminUsername;   /* 用户看不懂外键，他需要知道管理员的用户名是什么 */

}